Графические возможности Maple
В любой
вычислительной среде графика является важнейшим средством визуализации
вычислений. И система Maple в
этом смысле не является исключением. В библиотеке ядра Maple имеются всего четыре графические
команды: plot – для
вывода плоской или 2D-графики, plot3d – для вывода пространственной или 3D-графики, smartplot и smartplot3d – для “быстрого” вывода графики. Первые две команды
предоставляют пользователю обширные возможности визуализации различных объектов
и простые способы задания их свойств. Последнее обстоятельство достигается за
счет наличия тщательно продуманной системы опций – необязательных аргументов plot и plot3d. Если
конкретные опции в этих командах не указаны, то при выводе графики используются
их значения, установленные по умолчанию, то есть глобально, на все сессии, или
командой setoptions на
текущую сессию. Кроме того, свойства уже выведенных графиков можно изменять с
помощью кнопок панели инструментов, выборов системного меню, выборов
контекстного меню и горячими ключами. Команды smartplot и smartplot3d
являются экзотическими и используются
редко.
Существенные расширения графики предоставляются командами различных
пакетов расширений. Отметим лишь некоторые из них:
· пакет plots. Построение специальных типов 2D- и 3D-графиков, интерактивное
построение графиков, анимация графиков;
· пакет plottools. Построение
2D- и 3D-примитивов, преобразования графиков. Примитивы – это графики
конкретных геометрических объектов, которые выводятся по именам и основным характеристикам
этих объектов;
· пакет stats[statplots] (пакет stats, подпакет statplots). Построение специальных статистических графиков,
преобразования графиков;
· пакет Student с подпакетами Calculus – одномерные вычисления, LinearAlgebra – линейная алгебра, MultivariateCalculus – многомерные вычисления, Precalculus (подготовительные темы). Подпакеты
содержат интерактивные
методические разработки для освоения многих разделов математики с визуализацией
различных объектов;
· пакет geometry. Построение различных объектов геометрии Евклида на
плоскости и преобразования этих объектов;
· пакет geom3. Построение различных объектов геометрии Евклида в
трехмерном пространстве и преобразования этих объектов.
Первые три из этих пакетов будут
описаны полностью.
Начиная конкретный разговор о
синтаксисе и семантике графических средств системы Maple, отметим, что по нашему глубокому убеждению, визуализация
объектов способствует рождению глубоких и неожиданных озарений не только при
обучении, но и в исследованиях.
Типы команд
графики
Здесь
использованы обозначения: command – произвольная команда вывода графики, obj – объект,
подлежащий визуализации.
Тип
command(obj) – прямая визуализация объекта. При
нажатии клавиши {¿} происходит прямая визуализация указанного в command графического
объекта obj. В синтаксисе command(obj): вывод объекта подавляется;
Тип p := command(obj) – создание и вывод графической структуры. При нажатии клавиши {¿} создается и выводится графическая структура p указанного
в command объекта
obj.
Фактически в специальном текстовом формате формируются все необходимые данные,
по которым впоследствии может быть визуализирован сам объект. Эти данные
получают имя p, а вывод соответствующего им графика может быть
реализован командой display пакета plots. В синтаксисе p := command(obj): вывод графической структуры p
подавляется. Иногда для вывода полной
графической структуры p требуется
выполнить команду lprint(p).
Направление вывода
графиков
На панели Options, открываемой через выбор Tools системного
меню, можно зафиксировать режимы Inline или Window. В
первом случае вывод всех графических объектов будет происходить в текущий
документ, а во втором – каждый объект будет выводиться в отдельный документ.
При этом панель Options может быть закрыта одной из трех кнопок: Apply to Session, Apply Globally и Cancel, что
приводит соответственно к установке нового режима только на текущую сессию, на
все сессии или сохраняет существующий режим вывода графиков.
Бокс и рамка
Ниже часто будут использоваться понятия
рамки и бокса. Поясним, что это такое.
Рамка
– это область необязательно с видимой границей, внутри которой располагается
система координат с графиками или без них. Для 2D-графиков рамка является прямоугольником. Для 3D-графиков
рамка – прямоугольный параллелепипед, точнее, его
изображение на плоскости.
Бокс – это прямоугольная область, являющаяся контейнером
для рамки. Если курсор находится в районе бокса, то граница бокса маркируется 8
маленькими квадратиками по три с каждой из сторон. Если же в районе бокса
производится щелчок левой или правой кнопкой мыши, то кроме
маркеров-квадратиков прорисовывается вся его граница. Кроме рамки в боксе могут
содержаться заголовок графика и его легенда, то есть справочная информация по
графику.
Двумерная графика ядра Maple
Двумерная графика, или, по-другому, 2D-графика,
представляет собой изображения кривых и иных плоских графических объектов. В
аргументах команд вывода графики они могут задаваться различными способами:
· любыми синтаксически правильными Maple-выражениями
expr от одной
неизвестной, то есть неопределенной переменной. В expr могут
входить ранее определенные переменные (tan(y+a), где a – имеет значение; …), обращения к встроенным функциям
и процедурам (sin(x), cos(y), floor(t), …), обращения к пользовательским функциям и
процедурам (mf(x), где mf := x ® x*cos(x); mproc(5), где mproc := proc(u) 1+piecewise(u > 0, u) end proc);
· именами встроенных функций и процедур: sin, cos, floor, …;
· именами пользовательских функций и процедур: mf, mproc, …;
· процедурами: proc(x) … end
proc, …;
· функциональными операторами: x
® x^2+x, t ® g(t), …
При работе с графикой могут применяться
различные системы координат: декартова, полярная, эллиптическая, роза и т. д. В
одной и той же системе координат могут быть выведены графики нескольких
объектов, заданных как в обычной, так и в параметрической форме.
Вывод 2D-графики командой plot
В библиотеке ядра Maple расположено всего две команды вывода
2D-графики – это plot
и smartplot. Команда plot позволяет строить графики по именам объектов и по
обращениям к ним; выводить графики объектов, задаваемых в обычной и
параметрической форме; создавать графики по спискам точек; использовать
многочисленные системы координат; гибко управлять свойствами графиков из самой
команды, панели инструментов, системного меню, контекстного меню и горячими
ключами. Команда smartplot имеет ограниченное применение. Опишем синтаксис и
семантику этих команд.
Построение графиков обращением к
объектам
Здесь expr(x), expr1(x), expr2(x), … – выражения от одной неизвестной, то есть
неопределенной переменной x. В частности, это могут быть обращения к встроенным
или пользовательским функциям и процедурам. В случаях C и D вместо списка [expr1(x), expr2(x), …] можно использовать множество {expr1(x), expr2(x), …}. Параметры a, b, c, d – это
выражения с действительными числовыми значениями. В них могут входить константы
Pi (p), exp(1) (e), -infinity (-¥), infinity (¥), +infinity (¥). Аргументы a..b и c..d задают соответственно диапазоны
изменения независимой переменной x от a до b и возвращаемых объектами значений y
от c до d. Естественно,
что имена x и y могут быть иными. Если диапазон a..b
бесконечной длины, то вывод графика реализуется
на конечном промежутке, получаемом преобразованием a..b функцией arctan. Поэтому в данном случае мы можем наблюдать лишь характер
поведения объекта вблизи точек ±¥.
Аргументы opts не
обязательны. Они представляют собой последовательность, называются опциями, определяют свойства выводимых графиков
и задаются в виде “имя = значение”. При отсутствии в команде plot той или иной опции,
используется ее значение, установленное в системе по умолчанию.
Команда plot(expr(x), x = a..b, opts) выводит график выражения expr(x) с диапазоном значений по оси абсцисс от a до b и
диапазоном значений по оси ординат, подбираемым в соответствии с вычисленными
значениями expr(x). По умолчанию график
выводится в декартовой прямоугольной системе координат. Диапазон a..b
необязателен. Его отсутствие равносильно
заданию a = -10 и b = 10. Построение графика проводится вычислением
значений expr(x) в n равноотстоящих
узлах a = x1 < x2 < … < xn = b и выводом точек (xk, expr(xk))
(k = 1, 2, …, n). По умолчанию n
= 50 и пары точек (xk,
expr(xk)) и (xk+1, expr(xk+1)) (k
= 1, 2, …, n–1) соединяются отрезками прямых линий. Улучшение
качества графика может быть достигнуто увеличением n опцией numpoints = n или
включением специального адаптивного алгоритма опцией adaptive = true. Впрочем,
последняя установка действует по умолчанию. Блокирование соединения смежных
точек отрезками прямых реализуется опцией style = point.
Команда
plot(expr(x), x = a..b, y = c..d, opts) выполняется так же, как и первая, но здесь область выводимых
значений задается диапазоном c..d.
Команды
plot([expr1(x), expr2(x), …] , x = a..b, opts) и plot([expr1(x), expr2(x), …], x = a..b, y = c..d, opts) выполняются аналогично соответствующим командам,
рассмотренным выше, но здесь в одной системе координат выводятся графики
нескольких выражений по их списку [expr1(x), expr2(x), …]. В данном случае при задании опции в виде “имя = значение” соответствующее свойство
устанавливается в одно и то же значение для всех объектов списка. Однако,
некоторые опции допускают расширенный синтаксис в виде “имя = [значение_1, значение_2,
…]”, устанавливая индивидуальные значения конкретного свойства соответствующим
объектам expr1(x), expr2(x),
…
Пример 1. Вывести график функции
y = tg(x)+sin(5x) на промежутке изменения x = 0..2p.
Решение. В приведенном решении
поставленной задачи диапазон изменения y
ограничен промежутком -5..5. Опциями color и thickness задайте соответственно свойства
выводимой линии: цвет – черный, толщина – 2 пункта. Вертикальные асимптоты появляются
благодаря установке по умолчанию опции discont = false.
Решение. По умолчанию график
строится для 50 точек. Для получения его более качественной прорисовки опцией numpoints количество точек для вычисления
увеличте до 200.
и t+cos(t)–4 на промежутке изменения независимых переменных от
0 до 10.
Решение. В решении в команде plot выражение
sin(x)+
задайте обращением к
процедуре, а выражение t+cos(t)–4 – обращением к функции пользователя. Задайте толщину выводимых кривых и цветовые характеристики
Команда
plot([expr1(t), expr2(t), t = a..b], opts) выводит график параметрически заданной функции x = expr1(t), y = expr2(t) (a
£ t £ b) по обращениям к определяющим ее объектам expr1(t) и expr2(t). Диапазоны
изменения x и y
подбираются системой автоматически.
Команда
plot([expr1(t), expr2(t), t = a..b], x1..x2, opts) выполняется так же, как и первая, но здесь график
выводится в заданном диапазоне x1..x2 изменения переменной x.
Команда
plot([expr1(t), expr2(t), t = a..b], x1..x2, y1..y2, opts) выполняется так же, как и первая, но здесь график
выводится в заданных диапазонах x1..x2 и y1..y2 изменения переменных x и
y соответственно.
Пример 4. Вывести точечный
график параметрически заданной функции:

Решение.
В приведенном решении стиль “точечный” для выводимой кривой задается опцией style = point, а размер точек
– опцией symbolsize = 10.
|
> |
plot([t^1.1, 2*sqrt(t)*sin(7*t), t = 0..Pi], |
{Shift+¿} |
|
|
style = point, symbolsize = 10, |
{Shift+¿} |
|
|
color = black, numpoints = 150); |
{¿} |
Пример 5. Вывести график параметрически заданной функции
x = 2cos(3t), y
= 2sin(5t) (0 £ t £ 2p)
по именам объектов, ее составляющих.
В одной системе координат можно вывести
графики нескольких параметрически заданных функций, используя любые аналоги
синтаксиса команды plot двух
предыдущих пунктов.
Пример 6. В одной системе
координат вывести графики двух параметрически заданных функций.
Решение. В приведенном решении
используется множество, в котором каждый элемент есть список, полностью
определяющий конкретную функцию.
|
> |
plot({[2*cos(t)-cos(2*t), 2*sin(t)-sin(2*t), t = 0..2*Pi], |
{Shift+¿} |
|
|
[sin(s), s*cos(s), s = 0..2*Pi]}, color = [black, red], |
{Shift+¿} |
|
|
labels = [x, y], thickness = [1, 2]); |
{¿} |
Построение графиков по списку точек
Один или несколько графиков по списку
их точек можно вывести или командой plot или
командами listplot или pointplot из пакета plots, которые будут описаны позже.
Команда
plot([[x1, y1], [x2, y2], …], opts) по вложенному списку [[x1, y1], [x2, y2], …] строит график по
точкам [x1, y1], [x2, y2], … Управление свойствами
графика реализуется значениями опций opts. При отсутствии в plot конкретной опции используется ее значение, установленное по умолчанию. Например,
командой plot(…, style = point) выводятся только точки [x1, y1], [x2, y2], … А если в plot опции style нет, то эти же точки не
только выводятся, но смежные из них по списку дополнительно соединяются
отрезками прямых линий. Это соответствует установке по умолчанию style = line.
Команда plot([li1, li2, …], opts). Аргументы li1, li2,
… – это вложенные списки вида [[x1,
y1], [x2, y2], …]. Команда plot([li1, li2, …], opts) выполняется
так же, как и первая, но здесь в одной системе координат выводится сразу
несколько графиков: по точкам первого списка li1, по точкам второго списка li2, ...
Пример 7. Вывести список точек
li =
[[1, 5], [2, 1], …, [11, 5]] как два графика: один стилем line, а
другой стилем point.
“Быстрая” 2D-графика
Команда
smartplot(expr(x)) выводит график произвольного выражения expr(x) от одной
переменной x. В аргументах команды smartplot в явном виде опции указывать нельзя. При
визуализации выражения используются значения опций, установленные по умолчанию.
Тем не менее, свойства уже выведенного графика через системное или контекстное
меню изменять можно.
Команда smartplot(expr1(x), expr2(x), …) выполняется так же, как и первая, но
здесь в одной системе координат выводятся графики нескольких выражений expr1(x), expr2(x), … , которые можно задавать не
только в виде последовательностей, но и в виде списков [expr1(x), expr2(x), …] или множеств {expr1(x), expr2(x), … }. Индивидуальные свойства любого из
выведенных графиков можно изменять, используя выборы системного или
контекстного меню.
Команда
smartplot(expr1(x), …, expr2(y), …) выполняется аналогично smartplot(expr1(x), expr2(x), …), но здесь осью абсцисс для каждого
выражения является та переменная, от которой зависит это выражение.
Пример 7. Командой smartplot вывести в одной системе координат графики двух
функций x×sin(x) и x×cos(x). Для
второй функции осью абсцисс должна быть ось y. Сделайте установки цвета и добавьте легенду
Опции 2D-графики и их значения
Опции графических объектов определяют
их свойства. Внутри команд вывода графики они задаются дополнительными
аргументами в виде равенств: “имя опции = значение”. Порядок следования аргументов-опций в
командах вывода несущественен. Там, где в
значении опции используется строка без знаков пробела, можно использовать и
литерал. При визуализации нескольких графиков в одной системе координат
значения их конкретной опции задаются, как правило, списком – по одному
элементу на каждый график. Ниже дано краткое описание синтаксиса и семантики опций.
|
title= “name” |
Название графика
Название
графика задается строкой name опции title и выводится в верхней части бокса над графиком. Для
формирования многострочных заголовков в name необходимо
использовать управляющий символ переноса строки, то есть последовательность
знаков \n.
|
font
=
[na,st,si] |
Шрифт текстовых объектов графика
Опция
font элементами
списка [na, st, si] задает соответственно имя, стиль и размер шрифта
текстовых объектов графика. Более точно:
1. na
задает гарнитуру шрифта и может принимать
значения: times, courier, helvetica, symbol.
3. si устанавливает
размер символов шрифта в пунктах. Один пункт равен 1/72 дюйма.
|
titlefont = [na, st, si] |
Шрифт для названия графика
Шрифт
заголовка графика задается так же, как и в опции font.
|
legend = “text” |
Легенда графика
Легенда
графика задается строкой text опции legend, а размещается снизу графика в виде “отрезок прямой +
пробелы + text” или “точка + пробелы + text”. При этом отрезок прямой выводится типом, цветом и
толщиной линии графика, а точка – типом, цветом и размером точек графика.
Параметр text называется меткой и обычно представляет собой имя
выводимой функции или строковую запись выражения, определяющего эту функцию.
При выводе графиков нескольких функций в одной системе координат параметр text
необходимо задавать в виде списка [“text1”, “text2”, …]. Тогда последовательные элементы этого списка
будут формировать отдельные строки легенды, соответствующие выводимым графикам.
Параметр text легенды
можно редактировать через стандартное меню (Plot/Legend/Edit Legend
…) или через контекстное меню (RClick/Legend/Edit Legend …).
Сформированную
легенду можно прятать, то есть делать невидимой на графике, и снова выводить.
Реализуется это проставлением или удалением галочки n у выбора Show Legend через стандартное меню (Plot/Legend/ Show Legend …) или через контекстное меню (RClick/Legend/Show Legend …).
На панели Options независимым переключателем Automatically … можно включить или выключить автоматический вывод легенды для 2D-графиков (Tools/Options/Display/Automatically display legend in 2D-plots). При включенном переключателе Automatically… легенда выводиться и при отсутствии в команде plot
опции legend.
Фактически, в этом случае для одного графика неявно реализуется опция legend = “Curve
|
axes= ty |
Тип осей
Параметр
ty опции axes задает
тип отображаемых осей координат и может принимать следующие значения: boxed, frame, normal и none. При ty = normal оси координат “оптимальным” образом размещаются в
диапазонах изменения абсциссы и ординаты графика. При ty = boxed в диапазонах изменения абсциссы и
ординаты график заключается в прямоугольную рамку, по нижней и левой сторонам
которой располагаются соответственно оси абсцисс и ординат. При ty = frame оси координат выводятся так же,
как и при ty = boxed, но без ограничивающей рамки. При ty = none график выводится без рамки и без
координатных осей.
|
axesfont = [na,
st, si] |
Шрифт значений меток осей координат
Шрифт
значений меток осей координат задается так же, как и в опции font.
Маркируемые точки осей и их количество
Опция tickmarks
=
[n, m]. Параметры n
и m определяют маркировку по осям абсцисс и ординат
соответственно. Любой из элементов a Î {n, m} может быть натуральным числом, списком
действительных чисел или параметром default. Рассмотрим возможные случаи:
· a – натуральное число. Тогда a задает минимальное количество точек, маркируемых на
соответствующей оси, то есть тех точек, около которых появляются числовые
надписи (значения). Маркируемые точки выбираются на равном расстоянии друг от
друга.
·
a = [a1, a2, …, as]. Действительные числа ai (i = 1, 2, …, s) задают выводимые числовые значения меток по
соответствующей оси. Из списка a
используется лишь максимальная по длине возрастающая подпоследовательность
элементов;
· a = default. Системе предлагается самой выбрать подходящую маркировку
на соответствующей оси.
Опция xtickmarks = n действует аналогично A, но устанавливает количество
маркируемых точек только вдоль оси x.
Опция ytickmarks = m действует аналогично A, но устанавливает количество
маркируемых точек только вдоль оси y.
Пример 8. Вывести график функции y(x) = x3–11x2+34x–24 так, чтобы осевыми метками являлись:
· по оси абсцисс: точки пересечения функции y(x) с осью абсцисс и ее точки экстремума;
· по оси ординат: точка 0 и значения y(x) в точках экстремума.
Решение. В предложенном решении используется функция Flatten пакета ListTools, которая
выравнивает все уровни элементов вложенного списка до его первого уровня, то
есть превращает вложенный список в простой список. После определения функции y(x) вычисления
продолжаются так. Находится список a корней y(x), находится
список b корней
, из списков a и b составляется вложенный список t1, из t1 создается простой список t2, из приближенных
значений элементов t2 формируется список t3, сортировкой
элементов t3 по неубыванию создается
требуемый список lx меток для оси x. Далее, составляется список s1 из 0 и
значений y(x) в элементах b, из приближенных значений элементов s1 формируется
список s2, сортировкой
элементов s2 по неубыванию создается требуемый список ly меток для оси y. На последнем
этапе командой plot выводится
требуемый график, а также графики двух дополнительных прямых y = y(b[1]) и y = y(b[2]).
Заметим, что все элементы lx в данном примере
действительные числа, а стационарные точки, включенные в lx, составляют
множество точек экстремума y(x).
|
> |
with(ListTools): |
{Shift+¿} |
|
|
y := x -> x^3-11*x^2+34*x-24: |
{Shift+¿} |
|
|
a := [solve(y(x),
x)]: b := [solve(diff(y(x), x))]: |
{Shift+¿} |
|
|
t1 := [a, b]: t2 := Flatten(t1): t3 := evalf(t2, 3): lx:= sort(t3): |
{Shift+¿} |
|
|
s1 := [0, y(b[1]), y(b[2])]: s2 := evalf(s1, 4): ly := sort(s2): |
{Shift+¿} |
|
|
plot([y(x), y(b[1]), y(b[2])], x = 0..7, y = -5..10, |
{Shift+¿} |
|
|
thickness
= 2, color = black, tickmarks = [lx, ly]); |
{¿} |
|
labels = [“имя x”, “имя y”] |
Имена координатных осей
Строки
“имя x” и “имя y” опции labels задают названия координатных осей. По умолчанию – это
имена переменных, определяющих диапазоны в plot. Если метки не содержат знаков пробела, то они могут
задаваться литералами, то есть без кавычек.
|
labeldirections = [dix, diy] |
Направления меток координатных осей
Параметры
dix и
diy опции labeldirections определяют направления текста
меток осей абсцисс и ординат соответственно. Каждый
из них может принимать значения horizontal или vertical. В первом случае текст метки располагается параллельно оси абсцисс,
а во втором – параллельно оси ординат.
|
labelfont
= [na, st, si] |
Шрифт для имен координатных осей
Шрифт
для имен координатных осей задается так же, как и в опции font.
|
coords = sys |
Тип координатной системы
По
умолчанию графики фунций, заданных параметрически или традиционно, в виде
выражения от одной переменной, выводятся в прямоугольной декартовой системе
координат (cartesian). Параметром sys опции
coords можно задать
иную систему координат для вывода графиков. Возможные значения sys
следующие: cartesian (декартова прямоугольная), cardioid (кардиоидная), elliptic (эллиптическая), invelliptic (обратная эллиптическая), hyperbolic (гиперболическая), parabolic (параболическая), logarithmic (логарифмическая), maxwell (Максвелла), polar (полярная), bipolar (биполярная), rose (роза), tangent (тангенциальная), cassinian, invcassinian, logcosh.
|
linestyle = ty |
Тип линии графика
Параметр ty опции
linestyle задает тип линии выводимого графика. Он может принимать значения: 0, 1
или SOLID (сплошной), 2 или DOT (точечный), 3 или DASH (штриховой), 4 или DASHDOT (штрихпунктирный).
|
thickness
= n |
Толщина линии графика
Параметр n опции
thickness задает толщину линии (размер точек) графика. Возможные значения n
Î {0, 1, 2, …}. Чем больше n, тем толще
линия.
|
color
= col |
Цвет линии графика
Параметр col опции
color определяет цвет
линии или точек графика и может задаваться:
1.
предопределенными именами: aquamarine (зеленовато-голубой), black (черный), blue (синий), navy (морской волны), coral (коралловый), cyan (голубой), brown (коричневый), gold (золотой), green (зеленый), grey (серый), khaki (хаки), magenta (фиолетовый), maroon (красно-коричневый), orange (оранжевый), pink (розовый), plum (сливовый), red (красный), sienna (охра), tan (дубильный), turquoise (бирюзовый), violet (фиалковый), wheat (пшеничный), white (белый), yellow (желтый);
2.
RGB-схемой: COLOR(RGB, r, g, b), 0 £ r, g, b £ 1;
3. HUE-схемой: COLOR(
Кроме
перечисленных предопределенных встроенных имен цветов можно создать и
использовать свой собственный цвет, закрепив за ним требуемое пользовательское
имя с помощью функции macro, например, так:
macro(mycolor
= COLOR(RGB, 0.5, 0.5, 0.5)).
Несколько слов об используемых в
системе Maple RGB и HUE моделях
цвета для 2D -графики.
Модель представления цвета RGB
реализуется директивой COLOR(RGB, r, g, b) и названа так по начальным буквам составляющих её
базовых цветов R (Red – красный), G (Green – зеленый)
и B (Blue – синий). Любой цвет или оттенок a в этой модели представляется смешением определенных
количеств базовых цветов. Он задается тройкой чисел (r, g, b) (0 £ r, g, b £ 1), которые описывают доли (интенсивности) каждого
базового цвета, в составе a. Например, белый, черный и красный цвета задаются соответственно
директивами: COLOR(RGB, 1, 1, 1), COLOR(RGB, 0, 0, 0) и COLOR(RGB, 1, 0, 0).
В модели представления цвета HUE
при непрерывном изменении h
в пределах от 0 до 1 директива COLOR(HUE, h) возвращает цвета: red (красный), yellow (желтый), green (зеленый), cyan (голубой), blue (синий), magenta (фиолетовый), red (красный).
|
style=st |
Стиль интерполяции
Параметр
st опции style может принимать значения: point
(точечный), line (линия), patch
(заплатка), patchnogrid (заплатка без сетки). Они задают
соответствующий стиль интерполяции. При st
= point выводятся лишь вычисленные точки
графика и никакой интерполяции не проводится. При st = line выводятся вычисленные точки
графика и смежные из них соединяются отрезками прямых линий. Значения patch и
patchnogrid используются при выводе
закрашенных многоугольников соответственно с прорисовкой границы или без нее.
|
symbol = s
|
Тип точек графика
Параметр s опции
symbol задает форму точек выводимого графика и действует лишь при установке style = point. Возможные
значения s: box –
квадраты, cross –
крестики, diamond – ромбы и point. Они форсируют вывод точек соответствующей формы. При s = point тип выводимых точек определяется устройством вывода.
|
symbolsize
=
n |
Размер точек графика
Параметр
n опции symbolsize принимает
натуральные значения и задает размер точек графика, измеряемый в пунктах. Один
пункт равен 1/72 дюйма. На размер точек графика воздействует также опция thickness.
|
discont = lo |
Учет разрывов функции
Параметр
lo опции discont
принимает значения true и false. При lo = true
до построения графика система вызывает
функции discont или fdiscont, с
помощью которых определяет промежутки непрерывности исходной функции. Затем
исходная функция выводится на каждом найденном промежутке. При lo = false в точках разрыва второго рода выводятся вертикальные асимптоты.
|
filled = lo |
Закрашивание областей
Параметр lo опции filled принимает
значения true и false. При lo = true
области между кривой и осью абсцисс
закрашиваются цветом кривой. При lo = false закрашивания
этих областей не происходит.
|
numpoints
= n |
Минимальное количество точек для
вычислений
Параметр n опции
numpoints определяет минимальное количество точек для вычисления значений
объекта при его визуализации. По умолчанию n = 50.
Иногда этих точек оказывается недостаточно для получения качественного графика
даже при действии адаптивного алгоритма (см. опцию adaptive). Особенно это касается быстро осциллирующих функций.
В подобных ситуациях можно попытаться выйти из создавшегося положения,
увеличивая n в опции numpoints.
Пример 9 . Построить графики функции

при
x = 0..5 и различных значениях n
опции numpoints.
Решение.
Ниже график s(x) представлен при n = 50 – рисунок слева, и при n = 300 –
рисунок справа. Как видим, неровности зубцов левого рисунка на правом рисунке в
некоторой степени сглажены.
|
> |
restart: with(plots): |
{Shift+¿} |
|
|
s := x -> 30+sum((-1)^(k+1)*abs(9*x-k),
k = 0..40); |
{Shift+¿} |
|
|
t := array(1..2): |
{Shift+¿} |
|
|
t[1] := plot(s(x),
x = 0..5, color = black, numpoints = 50): |
{Shift+¿} |
|
|
t[2] := plot(s(x),
x = 0..5, color = black, numpoints = 600): |
{Shift+¿} |
|
|
display(t); |
{¿} |
|
adaptive = lo |
Адаптивность вычислений
Параметр lo опции
adaptive
может принимать значения true и false. При любом значении lo сначала выводимая функция вычисляется на некотором множестве
равноотстоящих точек из диапазона изменения независимой переменной. При lo = false вычисления на этом
заканчиваются, а при lo = true
продолжаются. При этом используется
специальный адаптивный алгоритм выбора точек для вычисления дополнительных
значений функции. Чем сложнее функция на данном участке, тем больше на нем
используется точек. Реальное количество точек, задействованных адаптивным
алгоритмом при построении графика, как правило, оказывается больше значения
параметра n в опции numpoint.
|
resolution
= n
|
Разрешающая способность
Параметр
n опции resolution
задает максимальное количество точек для вычисления значений функции при использовании
адаптивного алгоритма. По умолчанию n = 200.
|
sample = [a, b, …] |
Выборка точек
Список
[a, b, …] опции sample задает точки a, b, … , в которых должна быть вычислена функция при построении
графика. Использовать эту опцию целесообразно лишь при опции adaptive, равной false.
|
scaling
=
sc |
Масштабирование
Возможные
значения constrained и unconstrained
параметра sc опции scaling задают тип взаимосвязи масштабирования по разным
осям. При sc = constrained масштабы по осям устанавливаются
одинаковыми. При sc = unconstrained масштабы по осям устанавливаются
системой, исходя из свойств графика, и могут быть разными.
|
transparency = t |
Прозрачность графических объектов
Возможные
значения параметра t опции transparency лежат в диапазоне t = 0..1, где t = 0
– задает непрозрачность графических объектов, а t = 1 – полную их прозрачность. Промежуточные значения t
соответствуют различной степени
полупрозрачности объектов: чем больше t, тем более прозрачны объекты.
|
view
= [x1..x2, y1..y2] |
Обзор графика
Числовые
значения x1, x2, y1, y2 опции view определяют
в координатной системе прямоугольную область, ограничивая вывод графика по осям
абсцисс и ординат диапазонами x1..x2 и y1..y2 соответственно.
Пример 10. Вывести в эллиптической системе координат в диапазоне
x = -p..p график функции cos(3x). Получить новый график из старого при
опции view = [0.5..p/2, -0.5..1.1].
Модификация свойств 2D-графиков
Модификация свойств уже выведенного
графика может быть осуществлена с использованием команд, реализуемых:
· кнопками контекстной панели инструментов для 2D-графиков (context bar for
2D-plots);
· выборами контекстного меню;
· выборами системных контекстных бар-меню Plot
и Animate;
· горячими ключами и перетаскиванием объектов мышью;
· командами системы.
Пример 11. Пусть функция sin(x–cos(x)) задана в диапазоне -6..6.
Вывести графики этой функции в различных системах координат.
Решение. Создайте графическую структуру p
и массив из 15 элементов, являющихся
именами всех допустимых двумерных систем координат. Затем в цикле for
структура p командой
changecoords из декартовой системы координат последовательно
преобразуется в структуры других систем координат. Графики этих структур
выводятся командой display.
Формирование новых систем координат
Команда addcoords(name, [u, v], [ex1(u, v), ex2(u, v)], cons, defs) позволяет
построить новую двумерную систему координат с именем name
и переменными u и v. Связь системы name с
декартовой системой координат реализуется преобразованиями: x = ex1(u, v), y = ex2(u, v), где ex1 и
ex2 – выражения от неопределенных
переменных u и v. Необязательные аргументы cons и defs задают
для name соответственно
список констант и список значений по умолчанию (см. ?addcoords). С
созданной системой в текущей сессии можно проводить те же самые манипуляции,
что и с любыми другими встроенными системами координат. Например, строить
плоские графики, использовать с различными дифференциальными операторами.
Однако в следующей сессии система name окажется
неопределенной.
Команда
addcoords(name, [u, v, w], [ex1(u, v, w), ex2(u, v, w), ex3(u, v, w)], cons, defs) является аналогом команды для трехмерного случая. Связь
системы name с
декартовой системой координат реализуется преобразованиями: x = ex1(u, v, w), y = ex2(u, v, w), z = ex3(u, v, w), где ex1, ex2 и ex3
– выражения от неопределенных переменных u, v и w.
Пример 11.
|
> |
addcoords(myco, [u, v], [u-sin(v), v*cos(u)]); |
{Shift+¿} |
|
|
plot(x*cos(x), x = 0..10, coords = myco, thickness = 2) |
{¿} |
Трехмерная графика ядра Maple
Трехмерная графика, или, по-другому, 3 D -графика представляет собой изображения поверхностей и иных графических объектов.
Вывод 3 D -графики командой plot 3 d
В основной библиотеке Maple расположено всего две команды вывода 3D-графики – это plot 3 d и smartplot 3 d . Команда plot 3 d позволяет строить графики по именам объектов и по обращениям к ним; выводить графики объектов, задаваемых в обычной и параметрической форме; использовать многочисленные системы координат; гибко управлять свойствами графиков из самой команды, панели инструментов, системного и контекстного меню. Команда smartplot 3 d относится к экзотическим возможностям 3D-графики и имеет весьма ограниченное применение. Опишем синтаксис и семантику этих команд.
Построение поверхностей обращением к объектам
Команда . plot 3 d ( expr ( x , y ), x = a .. b , y = c .. d , opts ) выводит график выражения expr(x, y ) в диапазонах изменения независимых переменных: по оси абсцисс – от a до b, по оси ординат – от c до d. Область выводимых значений подбирается в соответствии с вычисленными значениями expr (x, y ). Опции opts определяют свойства выводимых графиков и не являются обязательными. Они задаются в виде “имя = значение”. При отсутствии в A той или иной опции, используется ее значение по умолчанию. Например, без опции “ coords = имя системы” график выводится в декартовой прямоугольной системе координат, без опции “ grid = [ m , n ]” график выводится в диапазонах изменения независимых переменных на равномерной сетке размером 25 ? 25, то есть expr (x, y ) вычисляется в 625 точках, являющихся узлами этой сетки.
Команда plot 3 d ([ expr 1 ( x , y ), expr 2 ( x , y ), …, expr n ( x , y )], x = a .. b , y = c .. d , opts ) при n ? 3 выполняется так же, как и A , но здесь в одной системе координат выводятся графики сразу n объектов expr k ( x , y ) ( k = 1, 2, …, n ) по списку обращений к ним. Если опция записана в виде “имя = значение”, то соответствующее свойство устанавливается в одно и то же значение сразу для всех объектов списка. Однако, некоторые опции допускают расширенный синтаксис в виде “имя = [значение_1, значение_2, …]”, устанавливая индивидуальные значения конкретного свойства соответствующим объектам expr k ( x , y ) (k = 1, 2, …, n ). Список объектов в B может быть заменен их множеством.
При n = 3 список в B интерпретируется как одна параметрически заданная функция u = expr 1 ( x , y ), v = expr 2 ( x , y ), w = expr 3 ( x , y ) ( x = a .. b , y = c .. d ), и при выполнении B выводится график этой функции. Для вывода графиков трех функций достаточно установить опцию plotlist = true или вместо нее просто записать ключевое слово plotlist .
Пример 12. Вывести график функции | x – y |+| x + y | в области x = -5..5, y = -5..5.
Пример 13. Вывести в одной системе координат графики двух функций f(x, y) = x 2 + y и g(x, y) = x + y 2 в области x = -5..5, y = -5..5.
Решение. В предложенном ниже решении раскраска первой из поверхностей реализуется с помощью выражения x * y (см. опцию color ).
> |
f := (x, y) -> x^2+y: g:=(x, y) -> x+y^2: |
{Shift+ ? } |
|
plot 3d([f(x, y), g(x, y)], x = -5..5, y = -5..5, |
{Shift+ ? } |
|
grid = [10, 10], color = [x*y, gray]); |
{ ? } |
Пример 14. Визуализировать поверхность, определяемую параметрически заданной функцией:
x = s ? sin (s) ? cos (t), y = s ? cos (s) ? cos (t), z = s ? sin (t)
(s = 0..2 p , t = 0.. p ).
Решение.
> |
plot 3d([x*sin(x)*cos(y), x*cos(x)*cos(y), x*sin(y)], |
{Shift+ ? } |
|
x = 0..2*Pi, y = 0..Pi, color = gray, |
{Shift+ ? } |
|
orientation = [60, -140], grid = [20, 10]); |
{ ? } |
Построение поверхностей по именам объектов
Здесь f , f k ( k = 1, 2, …, n )… – имена встроенных или пользовательских функций, встроенных или пользовательских процедур, процедуры или функциональные операторы. Процедуры и функции должны быть с двумя аргументами. Аргументы a .. b и c..d задают соответственно диапазоны изменения этих переменных от a до b и от c до d. Параметры a , b, c , d и op t s имеют тот же самый смысл, что и в предыдущем пункте.
Команда plot 3 d ( f , a .. b , c .. d , opts ) выводит график объекта f в диапазоне изменения значений: по оси абсцисс – от a до b, по оси ординат – от c до d. Диапазон значений f подбирается в соответствии с проведенными вычислениями этого объекта. По умолчанию график выводится в декартовой прямоугольной системе координат.
Команда plot 3 d ([ f 1 , f 2 , …, f n ], a .. b , c .. d , opts ) при n ? 3 выполняется так же, как и A , но здесь в одной системе координат выводятся графики сразу n объектов f 1 , f 2 , …, f n . При n = 3 список в B интерпретируется как имена одной параметрически заданной функции u = f 1 ( x , y ), v = f 2 ( x , y ), w = f 3 ( x , y ) ( x = a .. b , y = c .. d ), и при выполнении B выводится график этой функции. Для вывода графиков трех функций достаточно установить опцию plotlist = true или или вместо нее просто записать ключевое слово plotlist .
Пример 15. Вывести график функции
в области x = -3..3, y = -3..3.
Пример 16. Вывести график параметрически заданной функции:

Пример 17. Вывести график параметрически заданной функции:
x (s, t) = 2cos(s+t), y(s, t) = 2sin(s–t), z(s, t) = 2cos(s ? t ) (s = 0..3, t = 0..3).
Замечание. График параметрически заданной пространственной кривой x = f ( s ), y = g ( s ), z = h ( s ) ( a ? s ? b ) можно выводить как график поверхности с некоторым фиктивным диапазоном t = c..d второго несуществующего параметра t . Впрочем, для вывода пространственных кривых в пакете plots имеется специальная функция spacecurve .
Пример 18. Вывести график параметрически заданной пространственной кривой: x = 2 cos ( s ), y = 2 sin ( s ), z = 2 cos (12 s ) ( s = 0..2 p ).
“Быстрая” 3 D -графика
Команда smart plot 3 d ( expr ( x , y )) выводит график произвольного выражения expr ( x , y ) от двух переменных x и y в области x = -5..5, y = -5..5 . В аргументах команды smart plot 3 d в явном виде опции указывать нельзя. При визуализации выражения используются значения опций, установленные по умолчанию. Тем не менее, свойства уже выведенного графика через системное или контекстное меню изменять можно.
Команда smart plot 3 d ( expr 1( x , y ), expr 2( x , y ), …) выполняется так же, как и A , но здесь в одной системе координат выводятся графики нескольких выражений expr 1( x , y ), expr 2( x , y ) , …, которые можно задавать не только в виде последовательностей, но и списками [ expr 1( x , y ), expr 2( x , y ) , …] или множествами { expr 1( x , y ), expr 2( x , y ) , …}. Индивидуальные с войства любого выведенного графика можно изменять, используя выборы системного или контекстного меню.
Пример 19. Построить график smartplot 3 d ( x * sin ( y ), y * cos ( x ));
Опции 3 D -графики и их значения
Как и в двумерном случае, опции трехмерных графических объектов определяют их свойства и задаются дополнительными аргументами команд вывода этих объектов в виде равенств: “имя опции = значение”. Порядок следования аргументов-опций в функциях вывода несущественен. При визуализации нескольких графиков в одной системе координат значения их конкретной опции задаются, как правило, списком – по одному элементу на каждый график. Многие опции трехмерных графических объектов имеют такие же имена, как и в двумерном случае, аналогичен и синтаксис их значений с поправкой на трехмерность. Опции legend , discont , adaptive , resolution и sample в трехмерном случае вообще не используются, но зато появляется ряд новых опций: grid , gridstyle , light , lightmodel , ambientlight , shading , orientation , projection , contours .
Рассмотрим пример. Если в декартовой прямоугольной системе координат точки M = ( x , y , z ) описывать тройками ( r , q , j ) (r ? 0, - p ? q , j ? p ), где r длина вектора
от начала координат до точки M , q – угол между осью аппликат и
, j – угол между осью абсцисс и проекцией
на плоскость xy, то мы получим сферическую систему координат. Величины r , q и j называют соответственно полярным радиусом, широтой и долготой. При этом переход “сферическая система ® декартова система”, то есть ( r , q , j ) ® ( x , y , z ) проводится по формулам:

Описание всех упомянутых координатных систем и их связь с декартовой прямоугольной системой можно получить по команде ? coords .
Пример 20. Демонстрация действия опций coords , axes и title . Кроме того, использованы опции color , grid и orientation , описание которых приведено позже.
> |
plot 3d(h, alpha = 0..2*Pi, h = -5..5, |
{Shift+ ? } |
|
coords = cylindrical, title = cone , |
{Shift+ ? } |
|
color = [0.85, 0.85, 0.85 ], grid = [20, 10], |
{Shift+ ? } |
|
axes = boxed, orientation = [110, 60]); |
{ ? } |
Сетка поверхности
Опция grid = [ m , n ] списком [ n , m ] формирует сетку выводимой поверхности с k = ( n –1)*( m –1) “прямоугольными” ячейками на ней. Строится сетка так. Параметры n и m задают равноотстоящие точки соответственно по оси абсцисс и по оси ординат. На плоскости в диапазонах изменения независимых переменных эти точки определяют прямоугольную сетку, которая проектируется на выводимую поверхность и формирует сетку на ней.
Опция gridstyle = type определяет тип ячеек на выводимой поверхности S. При type = rectangular – ячейки S прямоугольные, при type = triangular – ячейки S треугольные.
Опция numpoints = n определяет минимальное количество точек для вычисления значений объекта при его визуализации. При отсутствии опции grid величина k = int ( sqrt ( n )) задает сетку поверхности размером k ? k .
Раскраска графиков
Опция color = col определяет раскраску выводимой поверхности S или цвет линий сетки S при ее отображении в виде каркаса или линий уровня. Параметр col можно задавать:
1) предопределенными именами: black , red , …, blue ;
2) RGB -схемой: COLOR ( RGB , r , g , b ), 0 ? r , g , b ? 1. Например, установка color = COLOR (RGB, 0.85, 0.85, 0.85) определяет светло-серый цвет ;
3) HUE- схемой : COLOR ( HUE, h), 0 ? h ? 1;
4) именами пользовательских цветов, определенных с помощью функции macro : macro ( mycolor = COLOR ( RGB , r , g , b )).
Кроме того, для 3 D -графиков цвета можно также задавать:
5) выражением от независимых переменных x и y : col = c ( x , y ). Раскраска точек S проводится в соответствии с HUE -схемой ;
6) списком из трех выражений от независимых переменных x и y : col = [c1(x, y), c2(x, y), c3(x, y)]. Раскраска точек S проводится в соответствии с RGB -схемой ;
7) процедурой от переменных x и y . Раскраска точек S проводится в соответствии с HUE -схемой ;
8) списком из трех процедур от переменных x и y . Раскраска точек S проводится в соответствии с RGB -схемой ;
Два последних варианта используются, если первый аргумент plot 3 d является процедурой или функциональным оператором.
Опция shading = sha так же, как и опция color , определяет раскраску поверхности S , но установка color имеет предпочтение перед установкой shading . Параметр sha может быть элементом множества { xyz , xy , z , zgrayscale , zhue , none }. Опишем возможные случаи:
Опция light = [ j , q , r , g , b ]задает направление ( j , q ) и цвет ( r , g , b ) источника подсветки выводимой поверхности. Аргументы j и q в сферической системе координат определяют углы направления в градусах, а аргументы r , g , b (0 ? r, g , b ? 1) – цвет в RGB -схеме.
Опция lightmodel = mod задает одну из предопределенных схем подсветки выводимой поверхности. Параметр mod может принимать значения: none (нет подсветки), light 1, light 2, light 3, light 4. Установка D имеет предпочтение перед установкой С.
Опция ambientlight = [ r , g , b ]задает RGB -цвет (0 ? r, g , b ? 1) внешнего источника подсветки выводимой поверхности.
Обзор графиков
Опция orientation = [ q , j ]задает в сферической системе координат углы q , j в градусах (-180 ° ? q , j ? 180 ° ), определяющие направление, из которого пользователь обозревает отображаемую поверхность. По умолчанию q = j = 45 ° .
Опция projection = pro определяет тип перспективы (проекции) для отображаемой поверхности. Параметр pro может быть действительным числом от 0 до 1 или одним из трех зарезервированных слов fisheye (рыбий глаз, pro = 0), normal ( pro = 0.5), orthogonal ( pro = 1). Значения pro I { fisheye , 0} соответствуют широкоугольной перспективе, значения pro I { orthogonal , 1} – ортогональной проекции, применяемой по умолчанию. Параметром pro I [0, 1] можно задавать промежуточные типы перспективы, от широкоугольной и до ортогональной.
Пример 30. Демонстрация действия опции scaling .
> |
plot 3d(1, t = -Pi..Pi, p = 0..Pi, coords = spherical, |
{Shift+ ? } |
|
color = [0. 97 , 0. 97 , 0. 97 ], grid = [20, 10] , |
{Shift+ ? } |
|
scaling = constrained); |
{ ? } |
Вид графика
Опция contours = nu определяет количество или местоположение контурных линий. Опция действует лишь при выводе поверхности с линиями уровня. Значение параметра nu может быть или натуральным числом, или списком действительных чисел. В первом случае nu является количеством выводимых контурных линий. По умолчанию nu = 10. Во втором случае элементы списка определяют значения для контурных линий.
Пример 21. Демонстрация действия опции filled .
> |
plot 3d(1+sin(x)*cos(y), x = 0..2*Pi,y = 0..2*Pi, |
{ Shift + ? } |
|
axes = boxed, grid = [15, 15], axes = frame, |
{ Shift + ? } |
|
color = [0.9, 0.9, 0.9], filled = true); |
{ ? } |
|
|
|
Графические структуры и их элементы
Ранее мы говорили о графической структуре объекта как совокупности данных о нем, представленных в специальном текстовом формате. Создание графических структур p любыми командами com вывода графики, в том числе и командами пакетов расширений, осуществляется предложениями вида p := com . Сами объекты по их структурам визуализируются функцией display пакета plots . Настал момент более подробно поговорить о графических структурах и элементах их составляющих.
2 D -структуры. Любая двумерная графическая структура S записывается в виде
PLOT (s 1, s 2, …, s k, opts) ( или INTERFACE _PLOT)
где s k (k = 1, 2, …, n) – элементарные структуры S ( элементы , примитивы ), opts – опции S . Элементарных структур всего четыре : POINTS ( точки ), CURVES ( кривые ), POLYGONS ( многоугольники ), TEXT ( текст ). Они имеют следующий синтаксис и семантику:
CURVES ([[x 11, y 11], [x 12, y 12], ..., [x 1p, y 1p]], |
[[x 21, y 21], [x 22, y 22], ..., [x 2p, y 2p]], |
…, |
[[x q 1, y q 1], [x q 2, y q 2], ..., [x qp, y qp]]) |
определяет последовательность кривых l i ( i = 1, 2, …, q ) на плоскости, которые строятся по точкам [ x i 1 , y i 1 ], [ x i 2 , y i 2 ], ..., [ x ip , y ip ]. Смежные точки при построении соединяются отрезками прямых;
POLYGONS ([[x 11, y 11], [x 12, y 12], ..., [x 1p, y 1p]], |
[[ x 21 , y 21 ], [ x 22 , y 22 ], ..., [ x 2 p , y 2 p ]], |
…, |
[[ x q 1 , y q 1 ], [ x q 2 , y q 2 ], ..., [ x qp , y qp ]]) |
определяет последовательность многоугольников m i ( i = 1, 2, …, q ) на плоскости, которые строятся по точкам [ x i 1 , y i 1 ], [ x i 2 , y i 2 ], ..., [ x ip , y ip ]. Смежные и две крайние точки при построении соединяются отрезками прямых, а многоугольники раскрашиваются. Для невыпуклых многоугольников правильная раскраска не гарантируется;
Опции opts в графических структурах те же самые, что и в командах вывода 2 D -графики, но здесь они записываются в верхнем регистре и с несколько иным синтаксисом (см. примеры).
3 D -структуры. Любая трехмерная графическая структура S записывается в виде
PLOT 3D(s 1, s 2, …, s k, opts) ( или INTERFACE _PLOT3D)
где s k ( k = 1, 2, …, n ) элементарные структуры S (элементы, примитивы), opts – опции S . В качестве элементарных графических структур для S могут служить четыре ранее рассмотренные 2 D -структуры POINTS , CURVES , PO LYGONS и TEXT с поправкой синтаксиса на трехмерность, а также:
[[[x 11, y 11, z 11], [x 12, y 12, z 12], ..., [x 1m, y 1m, z 1m]], |
[[x 21, y 21, z 21], [x 22, y 22, z 22], ..., [x 2m, y 2m, z 2m]], |
... |
[[x n 1, y n 1, z n 1], [x n 2, y n 2, z n 2], ..., [x nm, y nm, z nm]]]. |
(x, y, z), где x = A[i, j, s, 1], y = A[i, j, s, 3], z = A[i, j, s, 3],
( i = 1, 2, …, n ; j = 1, 2, …, m ; s = 1, 2, …, k ),
а значением f в точке ( x , y , z ) считается величина A ( i , j , s , 4). A также может быть вложенным списком.
Опции opts в графических структурах те же самые, что и в командах вывода 3 D -графики, но здесь они записываются в верхнем регистре и с несколько иным синтаксисом (см. примеры). В некоторых случаях команда convert позволяет преобразовывать одни элементарные графические структуры в другие, например GRID в POLYGON и т. д. Но при конвертировании не все опции допустимы.
Заметим, что выводить графики можно, непосредственно используя элементарные графические структуры и опции. Однако в реальной практике это вряд ли целесообразно делать. Ограничимся рассмотрением нескольких простых примеров.
Примеры 22.
> |
L := [[0, 0], [.5, .3], [.9, .8], [1.5, 1.5], [2, 1.8], |
{ Shift + ? } |
|
[2.5, 1.5], [3, .4]]: |
{ Shift + ? } |
|
PLOT (CURVES(L, COLOUR(RGB, 0, 0, 0)), |
{ Shift + ? } |
|
AXESLABELS ( “ x ” , “” ), THICKNESS(2), |
{ Shift + ? } |
|
VIEW (0. .. 3., DEFAULT)); |
{ ? } |
> |
PLOT (POLYGONS(L, COLOUR(RGB, .9, .9, .9)), |
{ Shift + ? } |
|
AXESLABELS( "x", "" ), THICKNESS(2), |
{ Shift + ? } |
|
VIEW(0. .. 3., DEFAUL T )); |
{ ? } |
> |
PLOT 3D(GRID(-3..3, -3..3, |
{ Shift + ? } |
|
[[-.8, -2.2, 2.7, 1], [-.7, .9, -.9, 1], |
{ Shift + ? } |
|
[-.9, .9, -.7, 0.5], [.7, -2.2, .4, 0.2]], |
{ Shift + ? } |
|
COLOR(RGB, .8, .8, .8)), AXES(NONE), |
{ Shift + ? } |
|
PROJECTION (121., 27., 1)); |
{ ? } |
И еще рассмотрим несколько интересных примеров
Пример 23 . В данном примере демонстрируется вывод в режиме анимации всех многогранников с именами из polyhedra _supported(). Сначала в переменной pol формируется отсортированный список имен многогранников. После этого создается массив ma их графических структур. Наконец, командой display последовательно выводятся сами многогранники. На рисунке приведен лишь один из полученных анимационных кадров.
> |
# формирование списка имен многогранников |
{ Shift + ? } |
|
restart : with(plots): |
{ Shift + ? } |
|
pol := polyhedra_supported(): |
{Shift+ ? } |
|
pol := sort(convert(pol, list)): |
{ ? } |
> |
# формирование массива графических структур |
{Shift+ ? } |
|
n := nops(pol): ma := array(1..n): |
{Shift+ ? } |
|
fori from 1 tondo |
{Shift+ ? } |
|
ma[i] := polyhedraplot([0, 0, 0], polytype = pol[i], |
{Shift+ ? } |
|
scaling = constrained, title = pol[i]) |
{Shift+ ? } |
|
enddo: |
{ ? } |
> |
# проигрывание анимации (кадр – многогранник ) |
{Shift+ ? } |
|
display (convert(ma, list), insequence = true); |
{ ? } |
Пример 24. В примере создаются графические структуры двух трубчатых поверхностей. Их визуализация реализуется командой display .
> |
with ( plots ): p := array (1..2): |
{ Shift + ? } |
|
p [1] := tubeplot([0, sin(s), cos(s)], s = 0..2*Pi, |
{Shift+ ? } |
|
radius = 0.12, orientation = [ 7 , 106 ] ) : |
{ Shift + ? } |
|
p [2] := tubeplot([cos(t)*cos(2*t), sin(t)*sin(2*t), |
{ Shift + ? } |
|
sin(t)]*10, t = 0..2*Pi, radius = 2.5*cos(t), |
{ Shift + ? } |
|
orientation = [109, 6 7]) : |
{ Shift + ? } |
|
display (p); |
{ ? } |